What distinguishes an interface from an abstract class in Java